#ifndef PRNG_H
#define PRNG_H
#include <vector>
#include <cstdint>
#include <random>
/* *
 * @class KeyedPRNG
 * @brief 基于密钥的伪随机数生成器类。
 *
 * `KeyedPRNG` 类使用哈希函数生成伪随机数，基于给定的密钥进行初始化，并提供相关的接口方法来控制伪随机数的生成过程。
 */
class KeyedPRNG {
public:
    std::mt19937_64 rng;

    KeyedPRNG();
    // 拷贝构造函数
    KeyedPRNG(const KeyedPRNG &) = delete;
    KeyedPRNG &operator = (const KeyedPRNG &) = delete;
    // 移动构造函数
    KeyedPRNG(KeyedPRNG &&other) = delete;
    KeyedPRNG &operator = (KeyedPRNG &&other) = delete;
    virtual ~KeyedPRNG();
    void Clock(std::vector<unsigned char> &sum);
};
#endif // PRNG_H